/**
 * Proyecto: Cognitum
 * Global IT Services 2008
 * @author Mislas
 */

Cognitum.Cartera.Cliente.Entity = function (){
	if (LOG.isDebugEnabled()) {
		LOG.debug('[Cliente.Entity.ctor] <-');
	}
	Cognitum.Cartera.Cliente.Entity.superclass.constructor.call(this, false, true);
}

Ext.extend(Cognitum.Cartera.Cliente.Entity, Karma.Core.Entity, {
	id: 'Cliente.Entity',
	name: 'Clientes',
	columns: [
		{ Name: 'Id', Property: 'Id', Mostrar: false },
		{ Name: 'Nombre', Property: 'NombreCompleto' },
		{ Name: 'Rfc', Property: 'Rfc' }
	],
	searchlist: {
		sortings: ['NombreCompleto'],
		views: [
			{ Id: 0, Nombre: 'Normal', Template: null },
			{ Id: 1, Nombre: 'Expandida', Template: null }
		],
		previewTemplate: null		
	},
	link: {
		displayProperty: 'NombreCompleto',
		
		tpl: '{NombreCompleto} [{Rfc}]',
		
		Open: function(id){
			if (LOG.isDebugEnabled()) {
				LOG.debug('[Cliente.Entity.Link.Open] <-');
			}
			this.useInvoker(Karma.Conf.GetMethod, id, {
				fn: function(cliente){
					if (LOG.isDebugEnabled()) {
			            LOG.debug('[Cliente.Entity.Link.Open]<- Cliente.Nombre: '+ cliente.Nombre);
		            }
					var entidad;
					if (Ext.isEmpty(cliente.Nombre)) {
						entidad = Karma.Core.ModuleManager.Instance.getEntity('Personas Morales');
					} else {
						entidad = Karma.Core.ModuleManager.Instance.getEntity('Personas Fisicas');
					}
					entidad.openWindow(cliente, null, { isNew: false }, entidad.editorXType);
				},
				scope: this
			});
			if (LOG.isDebugEnabled()) {
				LOG.debug('[Cliente.Entity.Link.Open] ->');
			}
		},
		
		New: function(config){
			if (LOG.isDebugEnabled()) {
				LOG.debug('[Cliente.Entity.Link.New] <-');
			}
	        if(!this.menu) {
	            this.menu = new Ext.menu.Menu({
	                items: [{
				        text:'Persona F&iacute;sica...',
				        scope: this,
				        handler:function(){
							var entidad = Karma.Core.ModuleManager.Instance.getEntity('Personas Fisicas');
							if (Ext.isEmpty(this.parameters) || this.parameters.length == 0) {
								entidad.New(config);
							} else {
								entidad.NewFromEntity(this.parameters, config);
							}
				        }
				    },{
				        text:'Persona Moral...',
				        scope: this,
				        handler:function(){
							var entidad = Karma.Core.ModuleManager.Instance.getEntity('Personas Morales');
							if (Ext.isEmpty(this.parameters) || this.parameters.length == 0) {
								entidad.New(config);
							} else {
								entidad.NewFromEntity(this.parameters, config);
							}
				        }
				    }]
	            });
	        }
			this.menu.showAt(Ext.EventObject.getXY());
			Ext.EventObject.preventDefault();
			if (LOG.isDebugEnabled()) {
				LOG.debug('[Cliente.Entity.Link.New] ->');
			}
		}
	}
});

Cognitum.Clientes = Cognitum.Cartera.Cliente.Entity;